<HTML> 
<HEAD> 
	<TITLE>3rd Party ROBOTC Drivers</TITLE> 
<link href="tabs.css" rel="stylesheet" type="text/css"/> 
<link href="doxygen.css" rel="stylesheet" type="text/css"/> 
</HEAD> 
 
<BODY bgcolor="#ffffff" link="#000000" vlink="#000000"> 
<table width="100%" bgcolor="navy" cellspacing=0 cellpadding=1 border=0> 
<tr><td><table width="100%" bgcolor="#EEEEDD" cellspacing=0 cellpadding=3 border=0> 
<tr> 
    <td width="33%" align="left"> <img src="images/LOGO_NXT.gif" width=266 height=44 border="0" alt="Mindstorms"></td> 
    <td><b><font size="+3" color="navy">3rd Party ROBOTC Drivers</font></b></td> 
    <td align="right"> <img src="images/logo.png" width=44 height=44 border="0" alt="RobotC"></td>     
</tr> 
  <tr bgcolor="#cccc99" align="right"> 
          <td colspan=3> <font face="arial" size="-1"> [<a href=main.html>Home</a>] [<a target=_top href="https://sourceforge.net/projects/rdpartyrobotcdr/">Download</a>] [<a target=_top href="http://apps.sourceforge.net/mantisbt/rdpartyrobotcdr/my_view_page.php">Submit a bug/suggestion</a>]  [<a target=_top href="http://www.robotc.net/forums/">ROBOTC Forums</a>] [<a target=_top href="http://botbench.com">Blog</a>] [<a target=_top href="http://sourceforge.net/donate/index.php?group_id=257238">Support this project</a>]</font> </td> 
</tr> 
</table></td></tr> 
</table> 
<!-- Generated by Doxygen 1.7.2 -->
<div class="header">
  <div class="headertitle">
<h1>hitechnic-sensormux.h</h1>  </div>
</div>
<div class="contents">
<a href="hitechnic-sensormux_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*!@addtogroup HiTechnic</span>
<a name="l00002"></a>00002 <span class="comment"> * @{</span>
<a name="l00003"></a>00003 <span class="comment"> * @defgroup htsmux Sensor MUX</span>
<a name="l00004"></a>00004 <span class="comment"> * HiTechnic Sensor MUX Sensor</span>
<a name="l00005"></a>00005 <span class="comment"> * @{</span>
<a name="l00006"></a>00006 <span class="comment"> */</span>
<a name="l00007"></a>00007 
<a name="l00008"></a>00008 <span class="comment">/*</span>
<a name="l00009"></a>00009 <span class="comment"> * $Id: hitechnic-sensormux.h 133 2013-03-10 15:15:38Z xander $</span>
<a name="l00010"></a>00010 <span class="comment"> */</span>
<a name="l00011"></a>00011 
<a name="l00012"></a>00012 <span class="preprocessor">#ifndef __HTSMUX_H__</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span><span class="preprocessor">#define __HTSMUX_H__</span>
<a name="l00014"></a>00014 <span class="preprocessor"></span><span class="comment">/** \file hitechnic-sensormux.h</span>
<a name="l00015"></a>00015 <span class="comment"> * \brief Commonly used functions used by drivers.</span>
<a name="l00016"></a>00016 <span class="comment"> *</span>
<a name="l00017"></a>00017 <span class="comment"> * common.h provides a number of frequently used functions that are useful for writing</span>
<a name="l00018"></a>00018 <span class="comment"> * drivers.</span>
<a name="l00019"></a>00019 <span class="comment"> * License: You may use this code as you wish, provided you give credit where its due.</span>
<a name="l00020"></a>00020 <span class="comment"> *</span>
<a name="l00021"></a>00021 <span class="comment"> * THIS CODE WILL ONLY WORK WITH ROBOTC VERSION 3.59 AND HIGHER. </span>
<a name="l00022"></a>00022 <span class="comment"></span>
<a name="l00023"></a>00023 <span class="comment"> *</span>
<a name="l00024"></a>00024 <span class="comment"> * Changelog:</span>
<a name="l00025"></a>00025 <span class="comment"> * - 0.1: Initial release, split off from common.h</span>
<a name="l00026"></a>00026 <span class="comment"> *</span>
<a name="l00027"></a>00027 <span class="comment"> * \author Xander Soldaat (xander_at_botbench.com)</span>
<a name="l00028"></a>00028 <span class="comment"> * \date 18 January 2011</span>
<a name="l00029"></a>00029 <span class="comment"> * \version 0.1</span>
<a name="l00030"></a>00030 <span class="comment"> */</span>
<a name="l00031"></a>00031 
<a name="l00032"></a>00032 <span class="preprocessor">#pragma systemFile</span>
<a name="l00033"></a>00033 <span class="preprocessor"></span>
<a name="l00034"></a>00034 <span class="preprocessor">#ifndef __COMMON_H__</span>
<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#include &quot;<a class="code" href="common_8h.html" title="Commonly used functions used by drivers.">common.h</a>&quot;</span>
<a name="l00036"></a>00036 <span class="preprocessor">#endif</span>
<a name="l00037"></a>00037 <span class="preprocessor"></span>
<a name="l00038"></a><a class="code" href="group__htsmux.html#gafb4d59f2a71a57aa7e1015eb1c0ac0a1">00038</a> <span class="preprocessor">#define __HTSMUX_SUPPORT__</span>
<a name="l00039"></a>00039 <span class="preprocessor"></span>
<a name="l00040"></a>00040 <span class="preprocessor">#ifndef SPORT</span>
<a name="l00041"></a><a class="code" href="group__htsmux.html#gabf500b8c69e75f9fad47c3a3e25626c7">00041</a> <span class="preprocessor"></span><span class="preprocessor">#define SPORT(X)  (X / 4)         </span><span class="comment">/*!&lt; Convert tMUXSensor to sensor port number */</span>
<a name="l00042"></a>00042 <span class="preprocessor">#endif</span>
<a name="l00043"></a>00043 <span class="preprocessor"></span>
<a name="l00044"></a>00044 <span class="preprocessor">#ifndef MPORT</span>
<a name="l00045"></a><a class="code" href="group__htsmux.html#ga9b28381cff35f11a5fd1aff7576117bc">00045</a> <span class="preprocessor"></span><span class="preprocessor">#define MPORT(X)  (X % 4)         </span><span class="comment">/*!&lt; Convert tMUXSensor to MUX port number */</span>
<a name="l00046"></a>00046 <span class="preprocessor">#endif</span>
<a name="l00047"></a>00047 <span class="preprocessor"></span>
<a name="l00048"></a>00048 <span class="preprocessor">#ifndef MAX_ARR_SIZE</span>
<a name="l00049"></a>00049 <span class="preprocessor"></span><span class="comment">/**</span>
<a name="l00050"></a>00050 <span class="comment"> * Maximum buffer size for byte_array, can be overridden in your own program.</span>
<a name="l00051"></a>00051 <span class="comment"> * It&#39;s 17 bytes big because the max I2C buffer size is 16, plus 1 byte to denote</span>
<a name="l00052"></a>00052 <span class="comment"> * packet length.</span>
<a name="l00053"></a>00053 <span class="comment"> */</span>
<a name="l00054"></a>00054 <span class="preprocessor">#define MAX_ARR_SIZE 17</span>
<a name="l00055"></a>00055 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00056"></a>00056 <span class="preprocessor"></span>
<a name="l00057"></a><a class="code" href="group__htsmux.html#ga3e5c86bc3da2a0b30418096889c43b59">00057</a> <span class="preprocessor">#define HTSMUX_I2C_ADDR         0x10  </span><span class="comment">/*!&lt; HTSMUX I2C device address */</span>
<a name="l00058"></a><a class="code" href="group__htsmux.html#gaac2b90be04e778f163b1a4d353a71071">00058</a> <span class="preprocessor">#define HTSMUX_COMMAND          0x20  </span><span class="comment">/*!&lt; Command register */</span>
<a name="l00059"></a><a class="code" href="group__htsmux.html#ga8a4e65c802620ecf1c02ec62a52a934a">00059</a> <span class="preprocessor">#define HTSMUX_STATUS           0x21  </span><span class="comment">/*!&lt; Status register */</span>
<a name="l00060"></a>00060 
<a name="l00061"></a>00061 <span class="comment">// Registers</span>
<a name="l00062"></a><a class="code" href="group__htsmux.html#ga5687e1829d93317d254e5e789774d971">00062</a> <span class="preprocessor">#define HTSMUX_MODE             0x00  </span><span class="comment">/*!&lt; Sensor mode register */</span>
<a name="l00063"></a><a class="code" href="group__htsmux.html#gab904655dc42a6924511f9611b795f71a">00063</a> <span class="preprocessor">#define HTSMUX_TYPE             0x01  </span><span class="comment">/*!&lt; Sensor type register */</span>
<a name="l00064"></a><a class="code" href="group__htsmux.html#ga04182a1d35f1b9aa6384ba0fd7e58e9b">00064</a> <span class="preprocessor">#define HTSMUX_I2C_COUNT        0x02  </span><span class="comment">/*!&lt; I2C byte count register */</span>
<a name="l00065"></a><a class="code" href="group__htsmux.html#ga373727ee9c3f3652c2f242bb307ee608">00065</a> <span class="preprocessor">#define HTSMUX_I2C_DADDR        0x03  </span><span class="comment">/*!&lt; I2C device address register */</span>
<a name="l00066"></a><a class="code" href="group__htsmux.html#gaa0249af004ec7197b1505e747e6f9bb9">00066</a> <span class="preprocessor">#define HTSMUX_I2C_MADDR        0x04  </span><span class="comment">/*!&lt; I2C memory address register */</span>
<a name="l00067"></a><a class="code" href="group__htsmux.html#ga246fa0c629ab77d8071fcb8dc6ff2762">00067</a> <span class="preprocessor">#define HTSMUX_CH_OFFSET        0x22  </span><span class="comment">/*!&lt; Channel register offset */</span>
<a name="l00068"></a><a class="code" href="group__htsmux.html#gae9183c7e1b7003b4da364934ab946a8b">00068</a> <span class="preprocessor">#define HTSMUX_CH_ENTRY_SIZE    0x05  </span><span class="comment">/*!&lt; Number of registers per sensor channel */</span>
<a name="l00069"></a>00069 
<a name="l00070"></a><a class="code" href="group__htsmux.html#ga29e3b147d271575dd4e209c94b0db3f5">00070</a> <span class="preprocessor">#define HTSMUX_ANALOG           0x36  </span><span class="comment">/*!&lt; Analogue upper 8 bits register */</span>
<a name="l00071"></a><a class="code" href="group__htsmux.html#ga21ebbdc383893609a887587349fbc9fd">00071</a> <span class="preprocessor">#define HTSMUX_AN_ENTRY_SIZE    0x02  </span><span class="comment">/*!&lt; Number of registers per analogue channel */</span>
<a name="l00072"></a>00072 
<a name="l00073"></a><a class="code" href="group__htsmux.html#gad2a815ec40bd134cc087ecfcd965e2f7">00073</a> <span class="preprocessor">#define HTSMUX_I2C_BUF          0x40  </span><span class="comment">/*!&lt; I2C buffer register offset */</span>
<a name="l00074"></a><a class="code" href="group__htsmux.html#ga7460307a6c7989f31619e8807d3894f7">00074</a> <span class="preprocessor">#define HTSMUX_BF_ENTRY_SIZE    0x10  </span><span class="comment">/*!&lt; Number of registers per buffer */</span>
<a name="l00075"></a>00075 
<a name="l00076"></a>00076 
<a name="l00077"></a>00077 <span class="comment">// Command fields</span>
<a name="l00078"></a><a class="code" href="group__htsmux.html#ga87bf7fc4152d52198af26231e10b2f9e">00078</a> <span class="preprocessor">#define HTSMUX_CMD_HALT         0x00  </span><span class="comment">/*!&lt; Halt multiplexer command */</span>
<a name="l00079"></a><a class="code" href="group__htsmux.html#ga95a8095ce56e5f2ec2fcc62cc6e08715">00079</a> <span class="preprocessor">#define HTSMUX_CMD_AUTODETECT   0x01  </span><span class="comment">/*!&lt; Start auto-detect function command */</span>
<a name="l00080"></a><a class="code" href="group__htsmux.html#ga4d110a4f1f00a887df8888b7678c4147">00080</a> <span class="preprocessor">#define HTSMUX_CMD_RUN          0x02  </span><span class="comment">/*!&lt; Start normal multiplexer operation command */</span>
<a name="l00081"></a>00081 
<a name="l00082"></a>00082 <span class="comment">// Status</span>
<a name="l00083"></a><a class="code" href="group__htsmux.html#gabf4d63c771c4a2386d60a0c452c38a79">00083</a> <span class="preprocessor">#define HTSMUX_STAT_NORMAL      0x00  </span><span class="comment">/*!&lt; Nothing going on, everything&#39;s fine */</span>
<a name="l00084"></a><a class="code" href="group__htsmux.html#gababa89ef296eee1514e9fc0c4e039a40">00084</a> <span class="preprocessor">#define HTSMUX_STAT_BATT        0x01  </span><span class="comment">/*!&lt; No battery voltage detected status */</span>
<a name="l00085"></a><a class="code" href="group__htsmux.html#gabde95f704ed14a290675ff05722ade78">00085</a> <span class="preprocessor">#define HTSMUX_STAT_BUSY        0x02  </span><span class="comment">/*!&lt; Auto-dected in progress status */</span>
<a name="l00086"></a><a class="code" href="group__htsmux.html#ga1d4d646e0e6c59abdc497bf600672ee8">00086</a> <span class="preprocessor">#define HTSMUX_STAT_HALT        0x04  </span><span class="comment">/*!&lt; Multiplexer is halted status */</span>
<a name="l00087"></a><a class="code" href="group__htsmux.html#gafdcd14f12ca6571b2a6afb2ab805d461">00087</a> <span class="preprocessor">#define HTSMUX_STAT_ERROR       0x08  </span><span class="comment">/*!&lt; Command error detected status */</span>
<a name="l00088"></a><a class="code" href="group__htsmux.html#ga8334b059d83c9e0d5750e13e79dd4509">00088</a> <span class="preprocessor">#define HTSMUX_STAT_NOTHING     0xFF  </span><span class="comment">/*!&lt; Status hasn&#39;t really been set yet */</span>
<a name="l00089"></a>00089 
<a name="l00090"></a>00090 <span class="comment">// Channel modes</span>
<a name="l00091"></a><a class="code" href="group__htsmux.html#ga67153fc7f3ba1d2932faa5d89899f354">00091</a> <span class="preprocessor">#define HTSMUX_CHAN_NONE        0x00  </span><span class="comment">/*!&lt; Nothing configured - analogue sensor */</span>
<a name="l00092"></a><a class="code" href="group__htsmux.html#gae16c08fa39951a8d0ebd9cbc35c3917e">00092</a> <span class="preprocessor">#define HTSMUX_CHAN_I2C         0x01  </span><span class="comment">/*!&lt; I2C channel present channel mode */</span>
<a name="l00093"></a><a class="code" href="group__htsmux.html#gabfddd16e499a2248aba91218406a464f">00093</a> <span class="preprocessor">#define HTSMUX_CHAN_9V          0x02  </span><span class="comment">/*!&lt; Enable 9v supply on analogue pin channel mode */</span>
<a name="l00094"></a><a class="code" href="group__htsmux.html#ga0198e93a593f53f511ea04f456b61660">00094</a> <span class="preprocessor">#define HTSMUX_CHAN_DIG0_HIGH   0x04  </span><span class="comment">/*!&lt; Drive pin 0 high channel mode */</span>
<a name="l00095"></a><a class="code" href="group__htsmux.html#ga13c94b82718786e4958db08223af3d93">00095</a> <span class="preprocessor">#define HTSMUX_CHAN_DIG1_HIGH   0x08  </span><span class="comment">/*!&lt; Drive pin 1 high channel mode */</span>
<a name="l00096"></a><a class="code" href="group__htsmux.html#ga0dc31790a94f39d8271c0dc063e636f2">00096</a> <span class="preprocessor">#define HTSMUX_CHAN_I2C_SLOW    0x10  </span><span class="comment">/*!&lt; Set slow I2C rate channel mode */</span>
<a name="l00097"></a>00097 
<a name="l00098"></a>00098 <span class="comment"></span>
<a name="l00099"></a>00099 <span class="comment">/*!&lt; Sensor types as detected by SMUX */</span>
<a name="l00100"></a><a class="code" href="group__htsmux.html#ga10cd65e58344a5b8a7543463d23ef15e">00100</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
<a name="l00101"></a><a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15ea3577f0349c4c0d70210f38bca34984d6">00101</a>   <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15ea3577f0349c4c0d70210f38bca34984d6">HTSMUXAnalogue</a> = 0x00,
<a name="l00102"></a><a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15ea54dfdb6ac056c41351ce8970d7de9d74">00102</a>   <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15ea54dfdb6ac056c41351ce8970d7de9d74">HTSMUXLegoUS</a> = 0x01,
<a name="l00103"></a><a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15eae9a69324161c57115addd4d789357e53">00103</a>   <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15eae9a69324161c57115addd4d789357e53">HTSMUXCompass</a> = 0x02,
<a name="l00104"></a><a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15eab9057b18ac74c810a530b04351cdb998">00104</a>   <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15eab9057b18ac74c810a530b04351cdb998">HTSMUXColor</a> = 0x03,
<a name="l00105"></a><a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15ea480ca6b21f542a4aafe8814c8b9386d2">00105</a>   <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15ea480ca6b21f542a4aafe8814c8b9386d2">HTSMUXAccel</a> = 0x04,
<a name="l00106"></a><a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15eac99c66e2ced83c67d3c4112377bcd784">00106</a>   <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15eac99c66e2ced83c67d3c4112377bcd784">HTSMUXIRSeeker</a> = 0x05,
<a name="l00107"></a><a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15ea6626c20be373964819d974255ea5c6b6">00107</a>   <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15ea6626c20be373964819d974255ea5c6b6">HTSMUXProto</a> = 0x06,
<a name="l00108"></a><a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15ea5b2e41909e2975ab32a9eba35cc570ae">00108</a>   <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15ea5b2e41909e2975ab32a9eba35cc570ae">HTSMUXColorNew</a> = 0x07,
<a name="l00109"></a><a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15ead10b4d2cf423ed19add57a4380ba7177">00109</a>   <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15ead10b4d2cf423ed19add57a4380ba7177">HTSMUXAngle</a> = 0x08,
<a name="l00110"></a><a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15ea7cf6e15105d89b7628d90f5b44f660f4">00110</a>   <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15ea7cf6e15105d89b7628d90f5b44f660f4">HTSMUXIRSeekerNew</a> = 0x09,
<a name="l00111"></a><a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15ea566eb5d751b2adc4669d435c8d9d647b">00111</a>   <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15ea566eb5d751b2adc4669d435c8d9d647b">HTSMUXSensorCustom</a> = 0x0E,
<a name="l00112"></a><a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15eaae7ed6517d7ac86e86754a856d562c11">00112</a>   <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15eaae7ed6517d7ac86e86754a856d562c11">HTSMUXSensorNone</a> = 0x0F
<a name="l00113"></a>00113 } <a class="code" href="group__htsmux.html#ga10cd65e58344a5b8a7543463d23ef15e">HTSMUXSensorType</a>;
<a name="l00114"></a>00114 <span class="comment"></span>
<a name="l00115"></a>00115 <span class="comment">/*!&lt; Sensor and SMUX port combinations */</span>
<a name="l00116"></a><a class="code" href="group__htsmux.html#gab5bad1759ac110c43e66c3ec54047f42">00116</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
<a name="l00117"></a><a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42a9bb0d1a5225e16291efdef5795191af1">00117</a>   <a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42a9bb0d1a5225e16291efdef5795191af1">msensor_S1_1</a> = 0,
<a name="l00118"></a><a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42a6a49f4401dd279e331abe9f9cc578593">00118</a>   <a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42a6a49f4401dd279e331abe9f9cc578593">msensor_S1_2</a> = 1,
<a name="l00119"></a><a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42a4a88d15c05033f57d53fc0305d25ab7a">00119</a>   <a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42a4a88d15c05033f57d53fc0305d25ab7a">msensor_S1_3</a> = 2,
<a name="l00120"></a><a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42aabf5f105071a3e58794cc5c8451d7a90">00120</a>   <a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42aabf5f105071a3e58794cc5c8451d7a90">msensor_S1_4</a> = 3,
<a name="l00121"></a><a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42a02f4b68991162edf03385c3d7b2fdce9">00121</a>   <a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42a02f4b68991162edf03385c3d7b2fdce9">msensor_S2_1</a> = 4,
<a name="l00122"></a><a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42ab243910634e3924cf1808ca9c606690d">00122</a>   <a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42ab243910634e3924cf1808ca9c606690d">msensor_S2_2</a> = 5,
<a name="l00123"></a><a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42a5f45f868a296f523a4bbc5e2e0acc452">00123</a>   <a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42a5f45f868a296f523a4bbc5e2e0acc452">msensor_S2_3</a> = 6,
<a name="l00124"></a><a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42ae750adb407aeb6731f674a80e9df506e">00124</a>   <a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42ae750adb407aeb6731f674a80e9df506e">msensor_S2_4</a> = 7,
<a name="l00125"></a><a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42add09489f41af695284f9612e1048615f">00125</a>   <a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42add09489f41af695284f9612e1048615f">msensor_S3_1</a> = 8,
<a name="l00126"></a><a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42ae356ab232011cda7e00aef0c350ec1ff">00126</a>   <a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42ae356ab232011cda7e00aef0c350ec1ff">msensor_S3_2</a> = 9,
<a name="l00127"></a><a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42ab43782b4cdea4533be488fed9ca4c3f8">00127</a>   <a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42ab43782b4cdea4533be488fed9ca4c3f8">msensor_S3_3</a> = 10,
<a name="l00128"></a><a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42ab387da964c6c01a46c6b144d8136d9b8">00128</a>   <a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42ab387da964c6c01a46c6b144d8136d9b8">msensor_S3_4</a> = 11,
<a name="l00129"></a><a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42a29216f3f604fb93dbd012981323841a5">00129</a>   <a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42a29216f3f604fb93dbd012981323841a5">msensor_S4_1</a> = 12,
<a name="l00130"></a><a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42a9c2cc3a6bf0ad04545740b249ed50e4b">00130</a>   <a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42a9c2cc3a6bf0ad04545740b249ed50e4b">msensor_S4_2</a> = 13,
<a name="l00131"></a><a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42a04d11017f7fef22e21b4958a202bcb92">00131</a>   <a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42a04d11017f7fef22e21b4958a202bcb92">msensor_S4_3</a> = 14,
<a name="l00132"></a><a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42a495c486cd3aff68c78b519258698db29">00132</a>   <a class="code" href="group__htsmux.html#ggab5bad1759ac110c43e66c3ec54047f42a495c486cd3aff68c78b519258698db29">msensor_S4_4</a> = 15
<a name="l00133"></a>00133 } <a class="code" href="group__htsmux.html#gab5bad1759ac110c43e66c3ec54047f42">tMUXSensor</a>;
<a name="l00134"></a>00134 
<a name="l00135"></a>00135 <span class="comment"></span>
<a name="l00136"></a>00136 <span class="comment">/*!&lt; array to hold SMUX status info */</span>
<a name="l00137"></a><a class="code" href="group__htsmux.html#ga7ed75bdc695445584a5ee74869aeb448">00137</a> ubyte <a class="code" href="group__htsmux.html#ga7ed75bdc695445584a5ee74869aeb448">HTSMUXstatus</a>[4] = {<a class="code" href="group__htsmux.html#ga8334b059d83c9e0d5750e13e79dd4509">HTSMUX_STAT_NOTHING</a>, <a class="code" href="group__htsmux.html#ga8334b059d83c9e0d5750e13e79dd4509">HTSMUX_STAT_NOTHING</a>, <a class="code" href="group__htsmux.html#ga8334b059d83c9e0d5750e13e79dd4509">HTSMUX_STAT_NOTHING</a>, HTSMUX_STAT_NOTHING};
<a name="l00138"></a>00138 <span class="comment"></span>
<a name="l00139"></a>00139 <span class="comment">/*!&lt; Array for holding sensor types */</span>
<a name="l00140"></a><a class="code" href="group__htsmux.html#ga1aab976635fca4e47109ec227c978141">00140</a> <a class="code" href="group__htsmux.html#ga10cd65e58344a5b8a7543463d23ef15e">HTSMUXSensorType</a> <a class="code" href="group__htsmux.html#ga1aab976635fca4e47109ec227c978141">HTSMUXSensorTypes</a>[16] = {<a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15eaae7ed6517d7ac86e86754a856d562c11">HTSMUXSensorNone</a>, <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15eaae7ed6517d7ac86e86754a856d562c11">HTSMUXSensorNone</a>, <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15eaae7ed6517d7ac86e86754a856d562c11">HTSMUXSensorNone</a>, <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15eaae7ed6517d7ac86e86754a856d562c11">HTSMUXSensorNone</a>,
<a name="l00141"></a>00141                                           <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15eaae7ed6517d7ac86e86754a856d562c11">HTSMUXSensorNone</a>, <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15eaae7ed6517d7ac86e86754a856d562c11">HTSMUXSensorNone</a>, <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15eaae7ed6517d7ac86e86754a856d562c11">HTSMUXSensorNone</a>, <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15eaae7ed6517d7ac86e86754a856d562c11">HTSMUXSensorNone</a>,
<a name="l00142"></a>00142                                           <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15eaae7ed6517d7ac86e86754a856d562c11">HTSMUXSensorNone</a>, <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15eaae7ed6517d7ac86e86754a856d562c11">HTSMUXSensorNone</a>, <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15eaae7ed6517d7ac86e86754a856d562c11">HTSMUXSensorNone</a>, <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15eaae7ed6517d7ac86e86754a856d562c11">HTSMUXSensorNone</a>,
<a name="l00143"></a>00143                                           <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15eaae7ed6517d7ac86e86754a856d562c11">HTSMUXSensorNone</a>, <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15eaae7ed6517d7ac86e86754a856d562c11">HTSMUXSensorNone</a>, <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15eaae7ed6517d7ac86e86754a856d562c11">HTSMUXSensorNone</a>, HTSMUXSensorNone};
<a name="l00144"></a>00144 
<a name="l00145"></a><a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">00145</a> <a class="code" href="group__common.html#gaa172ef131853460e5b9f5c6db81d30f4">tByteArray</a> <a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>;     <span class="comment">/*!&lt; Array to hold I2C command data */</span>
<a name="l00146"></a><a class="code" href="group__htsmux.html#ga3c4e921a4ae79f5ff4fd9d2924a0b3a7">00146</a> <a class="code" href="group__common.html#gaa172ef131853460e5b9f5c6db81d30f4">tByteArray</a> <a class="code" href="group__htsmux.html#ga3c4e921a4ae79f5ff4fd9d2924a0b3a7">HTSMUX_I2CReply</a>;       <span class="comment">/*!&lt; Array to hold I2C reply data */</span>
<a name="l00147"></a>00147 
<a name="l00148"></a><a class="code" href="group__htsmux.html#gae535601c6d1a8544ed23e79d545ce45c">00148</a> <span class="keyword">typedef</span> ubyte <a class="code" href="group__htsmux.html#gae535601c6d1a8544ed23e79d545ce45c">tConfigParams</a>[4];   <span class="comment">/*!&lt; Array to hold SMUX channel info */</span>
<a name="l00149"></a>00149 
<a name="l00150"></a><a class="code" href="group__htsmux.html#ga8cae8ef90996985e93877cad85c6e964">00150</a> <a class="code" href="group__htsmux.html#gae535601c6d1a8544ed23e79d545ce45c">tConfigParams</a> <a class="code" href="group__htsmux.html#ga8cae8ef90996985e93877cad85c6e964">Analogue_config</a> = {<a class="code" href="group__htsmux.html#ga67153fc7f3ba1d2932faa5d89899f354">HTSMUX_CHAN_NONE</a>, 0, 0, 0}; <span class="comment">/*!&lt; Array to hold SMUX config data for sensor */</span>
<a name="l00151"></a>00151 
<a name="l00152"></a>00152 byte <a class="code" href="group__htsmux.html#gac632dc09067064e4341414b9bf5d8ee8">HTSMUXreadStatus</a>(tSensors link);
<a name="l00153"></a>00153 <a class="code" href="group__htsmux.html#ga10cd65e58344a5b8a7543463d23ef15e">HTSMUXSensorType</a> <a class="code" href="group__htsmux.html#ga5c27e1b6045663f1ad101bb44d773919">HTSMUXreadSensorType</a>(<a class="code" href="group__htsmux.html#gab5bad1759ac110c43e66c3ec54047f42">tMUXSensor</a> muxsensor);
<a name="l00154"></a>00154 <span class="keywordtype">bool</span> <a class="code" href="group__htsmux.html#gab9fdda8b2a6ca3e637d831d62c20d857">HTSMUXsendCommand</a>(tSensors link, byte command);
<a name="l00155"></a>00155 <span class="keywordtype">bool</span> <a class="code" href="group__htsmux.html#ga9bdbbe2647d372774e595c5f4d2df8cf">HTSMUXreadPort</a>(<a class="code" href="group__htsmux.html#gab5bad1759ac110c43e66c3ec54047f42">tMUXSensor</a> muxsensor, <a class="code" href="group__common.html#gaa172ef131853460e5b9f5c6db81d30f4">tByteArray</a> &amp;result, <span class="keywordtype">int</span> numbytes, <span class="keywordtype">int</span> offset = 0);
<a name="l00156"></a>00156 <span class="keywordtype">bool</span> <a class="code" href="group__htsmux.html#gab9138a5f31c9bc88d36ae1afcec08bbf">HTSMUXsetMode</a>(<a class="code" href="group__htsmux.html#gab5bad1759ac110c43e66c3ec54047f42">tMUXSensor</a> muxsensor, byte mode);
<a name="l00157"></a>00157 <span class="keywordtype">bool</span> <a class="code" href="group__htsmux.html#ga8bfdff9424179e6e1e7103a14e44c05c">HTSMUXsetAnalogueActive</a>(<a class="code" href="group__htsmux.html#gab5bad1759ac110c43e66c3ec54047f42">tMUXSensor</a> muxsensor);
<a name="l00158"></a>00158 <span class="keywordtype">bool</span> <a class="code" href="group__htsmux.html#gadf42695ce182bb940e3cf966c82d4403">HTSMUXsetAnalogueInactive</a>(<a class="code" href="group__htsmux.html#gab5bad1759ac110c43e66c3ec54047f42">tMUXSensor</a> muxsensor);
<a name="l00159"></a>00159 <span class="keywordtype">int</span> <a class="code" href="group__htsmux.html#ga97b638b1fcdd530bd49661013ce2d4a1">HTSMUXreadAnalogue</a>(<a class="code" href="group__htsmux.html#gab5bad1759ac110c43e66c3ec54047f42">tMUXSensor</a> muxsensor);
<a name="l00160"></a>00160 <span class="keywordtype">bool</span> <a class="code" href="group__htsmux.html#gaef01450d36623d782b4bf1ad4f964246">HTSMUXreadPowerStatus</a>(tSensors link);
<a name="l00161"></a>00161 <span class="keywordtype">bool</span> <a class="code" href="group__htsmux.html#ga6587e9bbc8a3cf78774e3e9c43645cef">HTSMUXconfigChannel</a>(<a class="code" href="group__htsmux.html#gab5bad1759ac110c43e66c3ec54047f42">tMUXSensor</a> muxsensor, <a class="code" href="group__htsmux.html#gae535601c6d1a8544ed23e79d545ce45c">tConfigParams</a> &amp;configparams);
<a name="l00162"></a>00162 
<a name="l00163"></a>00163 <span class="comment"></span>
<a name="l00164"></a>00164 <span class="comment">/**</span>
<a name="l00165"></a>00165 <span class="comment"> * Read the status of the SMUX</span>
<a name="l00166"></a>00166 <span class="comment"> *</span>
<a name="l00167"></a>00167 <span class="comment"> * The status byte is made up of the following bits:\n</span>
<a name="l00168"></a>00168 <span class="comment"> *</span>
<a name="l00169"></a>00169 <span class="comment"> * | D7 | D6 | D4 | D3 | D2 | D1 | D1 |\n</span>
<a name="l00170"></a>00170 <span class="comment"> * - D1 - HTSMUX_STAT_BATT: No battery voltage detected</span>
<a name="l00171"></a>00171 <span class="comment"> * - D2 - HTSMUX_STAT_BUSY: Auto-dected in progress status</span>
<a name="l00172"></a>00172 <span class="comment"> * - D3 - HTSMUX_STAT_HALT: Multiplexer is halted</span>
<a name="l00173"></a>00173 <span class="comment"> * - D4 - HTSMUX_STAT_ERROR: Command error detected</span>
<a name="l00174"></a>00174 <span class="comment"> * @param link the SMUX port number</span>
<a name="l00175"></a>00175 <span class="comment"> * @return the status byte</span>
<a name="l00176"></a>00176 <span class="comment"> */</span>
<a name="l00177"></a><a class="code" href="group__htsmux.html#gac632dc09067064e4341414b9bf5d8ee8">00177</a> byte <a class="code" href="group__htsmux.html#gac632dc09067064e4341414b9bf5d8ee8">HTSMUXreadStatus</a>(tSensors link) {
<a name="l00178"></a>00178   memset(<a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>, 0, <span class="keyword">sizeof</span>(<a class="code" href="group__common.html#gaa172ef131853460e5b9f5c6db81d30f4">tByteArray</a>));
<a name="l00179"></a>00179 
<a name="l00180"></a>00180   <a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>[0] = 2;               <span class="comment">// Message size</span>
<a name="l00181"></a>00181   <a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>[1] = <a class="code" href="group__htsmux.html#ga3e5c86bc3da2a0b30418096889c43b59">HTSMUX_I2C_ADDR</a>; <span class="comment">// I2C Address</span>
<a name="l00182"></a>00182   <a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>[2] = <a class="code" href="group__htsmux.html#ga8a4e65c802620ecf1c02ec62a52a934a">HTSMUX_STATUS</a>;
<a name="l00183"></a>00183 
<a name="l00184"></a>00184   <span class="keywordflow">if</span> (!<a class="code" href="group__common.html#gad02e06f83b264ee6fc7df41eb4712080">writeI2C</a>(link, <a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>, <a class="code" href="group__htsmux.html#ga3c4e921a4ae79f5ff4fd9d2924a0b3a7">HTSMUX_I2CReply</a>, 1))
<a name="l00185"></a>00185     <span class="keywordflow">return</span> -1;
<a name="l00186"></a>00186 
<a name="l00187"></a>00187   <span class="keywordflow">return</span> <a class="code" href="group__htsmux.html#ga3c4e921a4ae79f5ff4fd9d2924a0b3a7">HTSMUX_I2CReply</a>[0];
<a name="l00188"></a>00188 }
<a name="l00189"></a>00189 
<a name="l00190"></a>00190 <span class="comment"></span>
<a name="l00191"></a>00191 <span class="comment">/**</span>
<a name="l00192"></a>00192 <span class="comment"> * Get the sensor type attached to specified SMUX port</span>
<a name="l00193"></a>00193 <span class="comment"> * @param muxsensor the SMUX sensor port number</span>
<a name="l00194"></a>00194 <span class="comment"> * @return the status byte</span>
<a name="l00195"></a>00195 <span class="comment"> */</span>
<a name="l00196"></a><a class="code" href="group__htsmux.html#ga5c27e1b6045663f1ad101bb44d773919">00196</a> <a class="code" href="group__htsmux.html#ga10cd65e58344a5b8a7543463d23ef15e">HTSMUXSensorType</a> <a class="code" href="group__htsmux.html#ga5c27e1b6045663f1ad101bb44d773919">HTSMUXreadSensorType</a>(<a class="code" href="group__htsmux.html#gab5bad1759ac110c43e66c3ec54047f42">tMUXSensor</a> muxsensor) {
<a name="l00197"></a>00197   <span class="keywordflow">return</span> <a class="code" href="group__htsmux.html#ga1aab976635fca4e47109ec227c978141">HTSMUXSensorTypes</a>[muxsensor];
<a name="l00198"></a>00198 }
<a name="l00199"></a>00199 
<a name="l00200"></a>00200 <span class="comment"></span>
<a name="l00201"></a>00201 <span class="comment">/**</span>
<a name="l00202"></a>00202 <span class="comment"> * Set the mode of a SMUX channel.</span>
<a name="l00203"></a>00203 <span class="comment"> *</span>
<a name="l00204"></a>00204 <span class="comment"> * Mode can be one or more of the following:</span>
<a name="l00205"></a>00205 <span class="comment"> * - HTSMUX_CHAN_I2C</span>
<a name="l00206"></a>00206 <span class="comment"> * - HTSMUX_CHAN_9V</span>
<a name="l00207"></a>00207 <span class="comment"> * - HTSMUX_CHAN_DIG0_HIGH</span>
<a name="l00208"></a>00208 <span class="comment"> * - HTSMUX_CHAN_DIG1_HIGH</span>
<a name="l00209"></a>00209 <span class="comment"> * - HTSMUX_CHAN_I2C_SLOW</span>
<a name="l00210"></a>00210 <span class="comment"> * @param muxsensor the SMUX sensor port number</span>
<a name="l00211"></a>00211 <span class="comment"> * @param mode the mode to set the channel to</span>
<a name="l00212"></a>00212 <span class="comment"> * @return true if no error occured, false if it did</span>
<a name="l00213"></a>00213 <span class="comment"> */</span>
<a name="l00214"></a><a class="code" href="group__htsmux.html#gab9138a5f31c9bc88d36ae1afcec08bbf">00214</a> <span class="keywordtype">bool</span> <a class="code" href="group__htsmux.html#gab9138a5f31c9bc88d36ae1afcec08bbf">HTSMUXsetMode</a>(<a class="code" href="group__htsmux.html#gab5bad1759ac110c43e66c3ec54047f42">tMUXSensor</a> muxsensor, byte mode) {
<a name="l00215"></a>00215   tSensors link = (tSensors)<a class="code" href="group__htsmux.html#gabf500b8c69e75f9fad47c3a3e25626c7">SPORT</a>(muxsensor);
<a name="l00216"></a>00216   byte channel = <a class="code" href="group__htsmux.html#ga9b28381cff35f11a5fd1aff7576117bc">MPORT</a>(muxsensor);
<a name="l00217"></a>00217 
<a name="l00218"></a>00218   <span class="comment">// If we&#39;re in the middle of a scan, abort this call</span>
<a name="l00219"></a>00219   <span class="keywordflow">if</span> (<a class="code" href="group__htsmux.html#ga7ed75bdc695445584a5ee74869aeb448">HTSMUXstatus</a>[link] == <a class="code" href="group__htsmux.html#gabde95f704ed14a290675ff05722ade78">HTSMUX_STAT_BUSY</a>) {
<a name="l00220"></a>00220     <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00221"></a>00221   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="group__htsmux.html#ga7ed75bdc695445584a5ee74869aeb448">HTSMUXstatus</a>[link] != <a class="code" href="group__htsmux.html#ga1d4d646e0e6c59abdc497bf600672ee8">HTSMUX_STAT_HALT</a>) {
<a name="l00222"></a>00222           <span class="comment">// Always make sure the SMUX is in the halted state</span>
<a name="l00223"></a>00223           <span class="keywordflow">if</span> (!<a class="code" href="group__htsmux.html#gab9fdda8b2a6ca3e637d831d62c20d857">HTSMUXsendCommand</a>(link, <a class="code" href="group__htsmux.html#ga87bf7fc4152d52198af26231e10b2f9e">HTSMUX_CMD_HALT</a>))
<a name="l00224"></a>00224             <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00225"></a>00225           wait1Msec(50);
<a name="l00226"></a>00226         }
<a name="l00227"></a>00227 
<a name="l00228"></a>00228   memset(<a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>, 0, <span class="keyword">sizeof</span>(<a class="code" href="group__common.html#gaa172ef131853460e5b9f5c6db81d30f4">tByteArray</a>));
<a name="l00229"></a>00229 
<a name="l00230"></a>00230   <a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>[0] = 3;               <span class="comment">// Message size</span>
<a name="l00231"></a>00231   <a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>[1] = <a class="code" href="group__htsmux.html#ga3e5c86bc3da2a0b30418096889c43b59">HTSMUX_I2C_ADDR</a>; <span class="comment">// I2C Address</span>
<a name="l00232"></a>00232   <a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>[2] = <a class="code" href="group__htsmux.html#ga246fa0c629ab77d8071fcb8dc6ff2762">HTSMUX_CH_OFFSET</a> + <a class="code" href="group__htsmux.html#ga5687e1829d93317d254e5e789774d971">HTSMUX_MODE</a> + (<a class="code" href="group__htsmux.html#gae9183c7e1b7003b4da364934ab946a8b">HTSMUX_CH_ENTRY_SIZE</a> * channel);
<a name="l00233"></a>00233   <a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>[3] = mode;
<a name="l00234"></a>00234 
<a name="l00235"></a>00235   <span class="keywordflow">return</span> <a class="code" href="group__common.html#gad02e06f83b264ee6fc7df41eb4712080">writeI2C</a>(link, HTSMUX_I2CRequest);
<a name="l00236"></a>00236 }
<a name="l00237"></a>00237 
<a name="l00238"></a>00238 <span class="comment"></span>
<a name="l00239"></a>00239 <span class="comment">/**</span>
<a name="l00240"></a>00240 <span class="comment"> * Set the mode of an analogue channel to Active (turn the light on)</span>
<a name="l00241"></a>00241 <span class="comment"> * @param muxsensor the SMUX sensor port number</span>
<a name="l00242"></a>00242 <span class="comment"> * @return true if no error occured, false if it did</span>
<a name="l00243"></a>00243 <span class="comment"> */</span>
<a name="l00244"></a><a class="code" href="group__htsmux.html#ga8bfdff9424179e6e1e7103a14e44c05c">00244</a> <span class="keywordtype">bool</span> <a class="code" href="group__htsmux.html#ga8bfdff9424179e6e1e7103a14e44c05c">HTSMUXsetAnalogueActive</a>(<a class="code" href="group__htsmux.html#gab5bad1759ac110c43e66c3ec54047f42">tMUXSensor</a> muxsensor) {
<a name="l00245"></a>00245   <span class="keywordflow">if</span> (<a class="code" href="group__htsmux.html#ga1aab976635fca4e47109ec227c978141">HTSMUXSensorTypes</a>[muxsensor] != <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15ea566eb5d751b2adc4669d435c8d9d647b">HTSMUXSensorCustom</a>)
<a name="l00246"></a>00246     <a class="code" href="group__htsmux.html#ga6587e9bbc8a3cf78774e3e9c43645cef">HTSMUXconfigChannel</a>(muxsensor, <a class="code" href="group__htsmux.html#ga8cae8ef90996985e93877cad85c6e964">Analogue_config</a>);
<a name="l00247"></a>00247 
<a name="l00248"></a>00248   <span class="keywordflow">if</span> (!<a class="code" href="group__htsmux.html#gab9138a5f31c9bc88d36ae1afcec08bbf">HTSMUXsetMode</a>(muxsensor, <a class="code" href="group__htsmux.html#ga0198e93a593f53f511ea04f456b61660">HTSMUX_CHAN_DIG0_HIGH</a>))
<a name="l00249"></a>00249     <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00250"></a>00250 
<a name="l00251"></a>00251   <span class="keywordflow">return</span> <a class="code" href="group__htsmux.html#gab9fdda8b2a6ca3e637d831d62c20d857">HTSMUXsendCommand</a>((tSensors)<a class="code" href="group__htsmux.html#gabf500b8c69e75f9fad47c3a3e25626c7">SPORT</a>(muxsensor), <a class="code" href="group__htsmux.html#ga4d110a4f1f00a887df8888b7678c4147">HTSMUX_CMD_RUN</a>);
<a name="l00252"></a>00252 }
<a name="l00253"></a>00253 
<a name="l00254"></a>00254 <span class="comment"></span>
<a name="l00255"></a>00255 <span class="comment">/**</span>
<a name="l00256"></a>00256 <span class="comment"> * Set the mode of an analogue channel to Inactive (turn the light off)</span>
<a name="l00257"></a>00257 <span class="comment"> * @param muxsensor the SMUX sensor port number</span>
<a name="l00258"></a>00258 <span class="comment"> * @return true if no error occured, false if it did</span>
<a name="l00259"></a>00259 <span class="comment"> */</span>
<a name="l00260"></a><a class="code" href="group__htsmux.html#gadf42695ce182bb940e3cf966c82d4403">00260</a> <span class="keywordtype">bool</span> <a class="code" href="group__htsmux.html#gadf42695ce182bb940e3cf966c82d4403">HTSMUXsetAnalogueInactive</a>(<a class="code" href="group__htsmux.html#gab5bad1759ac110c43e66c3ec54047f42">tMUXSensor</a> muxsensor) {
<a name="l00261"></a>00261   <span class="keywordflow">if</span> (<a class="code" href="group__htsmux.html#ga1aab976635fca4e47109ec227c978141">HTSMUXSensorTypes</a>[muxsensor] != <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15ea566eb5d751b2adc4669d435c8d9d647b">HTSMUXSensorCustom</a>)
<a name="l00262"></a>00262     <a class="code" href="group__htsmux.html#ga6587e9bbc8a3cf78774e3e9c43645cef">HTSMUXconfigChannel</a>(muxsensor, <a class="code" href="group__htsmux.html#ga8cae8ef90996985e93877cad85c6e964">Analogue_config</a>);
<a name="l00263"></a>00263 
<a name="l00264"></a>00264   <span class="keywordflow">if</span> (!<a class="code" href="group__htsmux.html#gab9138a5f31c9bc88d36ae1afcec08bbf">HTSMUXsetMode</a>(muxsensor, 0))
<a name="l00265"></a>00265     <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00266"></a>00266 
<a name="l00267"></a>00267   <span class="keywordflow">return</span> <a class="code" href="group__htsmux.html#gab9fdda8b2a6ca3e637d831d62c20d857">HTSMUXsendCommand</a>((tSensors)<a class="code" href="group__htsmux.html#gabf500b8c69e75f9fad47c3a3e25626c7">SPORT</a>(muxsensor), <a class="code" href="group__htsmux.html#ga4d110a4f1f00a887df8888b7678c4147">HTSMUX_CMD_RUN</a>);
<a name="l00268"></a>00268 }
<a name="l00269"></a>00269 
<a name="l00270"></a>00270 <span class="comment"></span>
<a name="l00271"></a>00271 <span class="comment">/**</span>
<a name="l00272"></a>00272 <span class="comment"> * Send a command to the SMUX.</span>
<a name="l00273"></a>00273 <span class="comment"> *</span>
<a name="l00274"></a>00274 <span class="comment"> * command can be one of the following:</span>
<a name="l00275"></a>00275 <span class="comment"> * - HTSMUX_CMD_HALT</span>
<a name="l00276"></a>00276 <span class="comment"> * - HTSMUX_CMD_AUTODETECT</span>
<a name="l00277"></a>00277 <span class="comment"> * - HTSMUX_CMD_RUN</span>
<a name="l00278"></a>00278 <span class="comment"> *</span>
<a name="l00279"></a>00279 <span class="comment"> * in progress.</span>
<a name="l00280"></a>00280 <span class="comment"> * @param link the SMUX port number</span>
<a name="l00281"></a>00281 <span class="comment"> * @param command the command to be sent to the SMUX</span>
<a name="l00282"></a>00282 <span class="comment"> * @return true if no error occured, false if it did</span>
<a name="l00283"></a>00283 <span class="comment"> */</span>
<a name="l00284"></a><a class="code" href="group__htsmux.html#gab9fdda8b2a6ca3e637d831d62c20d857">00284</a> <span class="keywordtype">bool</span> <a class="code" href="group__htsmux.html#gab9fdda8b2a6ca3e637d831d62c20d857">HTSMUXsendCommand</a>(tSensors link, byte command) {
<a name="l00285"></a>00285   memset(<a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>, 0, <span class="keyword">sizeof</span>(<a class="code" href="group__common.html#gaa172ef131853460e5b9f5c6db81d30f4">tByteArray</a>));
<a name="l00286"></a>00286 
<a name="l00287"></a>00287   <a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>[0] = 3;               <span class="comment">// Message size</span>
<a name="l00288"></a>00288   <a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>[1] = <a class="code" href="group__htsmux.html#ga3e5c86bc3da2a0b30418096889c43b59">HTSMUX_I2C_ADDR</a>; <span class="comment">// I2C Address</span>
<a name="l00289"></a>00289   <a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>[2] = <a class="code" href="group__htsmux.html#gaac2b90be04e778f163b1a4d353a71071">HTSMUX_COMMAND</a>;
<a name="l00290"></a>00290   <a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>[3] = command;
<a name="l00291"></a>00291 
<a name="l00292"></a>00292   <span class="keywordflow">switch</span>(command) {
<a name="l00293"></a>00293     <span class="keywordflow">case</span> <a class="code" href="group__htsmux.html#ga87bf7fc4152d52198af26231e10b2f9e">HTSMUX_CMD_HALT</a>:
<a name="l00294"></a>00294         <a class="code" href="group__htsmux.html#ga7ed75bdc695445584a5ee74869aeb448">HTSMUXstatus</a>[link] = <a class="code" href="group__htsmux.html#ga1d4d646e0e6c59abdc497bf600672ee8">HTSMUX_STAT_HALT</a>;
<a name="l00295"></a>00295         <span class="keywordflow">break</span>;
<a name="l00296"></a>00296     <span class="keywordflow">case</span> <a class="code" href="group__htsmux.html#ga95a8095ce56e5f2ec2fcc62cc6e08715">HTSMUX_CMD_AUTODETECT</a>:
<a name="l00297"></a>00297         <a class="code" href="group__htsmux.html#ga7ed75bdc695445584a5ee74869aeb448">HTSMUXstatus</a>[link] = <a class="code" href="group__htsmux.html#gabde95f704ed14a290675ff05722ade78">HTSMUX_STAT_BUSY</a>;
<a name="l00298"></a>00298         <span class="keywordflow">break</span>;
<a name="l00299"></a>00299     <span class="keywordflow">case</span> <a class="code" href="group__htsmux.html#ga4d110a4f1f00a887df8888b7678c4147">HTSMUX_CMD_RUN</a>:
<a name="l00300"></a>00300         <a class="code" href="group__htsmux.html#ga7ed75bdc695445584a5ee74869aeb448">HTSMUXstatus</a>[link] = <a class="code" href="group__htsmux.html#gabf4d63c771c4a2386d60a0c452c38a79">HTSMUX_STAT_NORMAL</a>;
<a name="l00301"></a>00301         <span class="keywordflow">break</span>;
<a name="l00302"></a>00302   }
<a name="l00303"></a>00303 
<a name="l00304"></a>00304   <span class="keywordflow">return</span> <a class="code" href="group__common.html#gad02e06f83b264ee6fc7df41eb4712080">writeI2C</a>(link, <a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>);
<a name="l00305"></a>00305 }
<a name="l00306"></a>00306 
<a name="l00307"></a>00307 <span class="comment"></span>
<a name="l00308"></a>00308 <span class="comment">/**</span>
<a name="l00309"></a>00309 <span class="comment"> * Read the value returned by the sensor attached the SMUX. This function</span>
<a name="l00310"></a>00310 <span class="comment"> * is for I2C sensors.</span>
<a name="l00311"></a>00311 <span class="comment"> * @param muxsensor the SMUX sensor port number</span>
<a name="l00312"></a>00312 <span class="comment"> * @param result array to hold values returned from SMUX</span>
<a name="l00313"></a>00313 <span class="comment"> * @param numbytes the size of the I2C reply</span>
<a name="l00314"></a>00314 <span class="comment"> * @param offset the offset used to start reading from</span>
<a name="l00315"></a>00315 <span class="comment"> * @return true if no error occured, false if it did</span>
<a name="l00316"></a>00316 <span class="comment"> */</span>
<a name="l00317"></a><a class="code" href="group__htsmux.html#ga9bdbbe2647d372774e595c5f4d2df8cf">00317</a> <span class="keywordtype">bool</span> <a class="code" href="group__htsmux.html#ga9bdbbe2647d372774e595c5f4d2df8cf">HTSMUXreadPort</a>(<a class="code" href="group__htsmux.html#gab5bad1759ac110c43e66c3ec54047f42">tMUXSensor</a> muxsensor, <a class="code" href="group__common.html#gaa172ef131853460e5b9f5c6db81d30f4">tByteArray</a> &amp;result, <span class="keywordtype">int</span> numbytes, <span class="keywordtype">int</span> offset) {
<a name="l00318"></a>00318   tSensors link = (tSensors)<a class="code" href="group__htsmux.html#gabf500b8c69e75f9fad47c3a3e25626c7">SPORT</a>(muxsensor);
<a name="l00319"></a>00319   byte channel = <a class="code" href="group__htsmux.html#ga9b28381cff35f11a5fd1aff7576117bc">MPORT</a>(muxsensor);
<a name="l00320"></a>00320 
<a name="l00321"></a>00321   memset(<a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>, 0, <span class="keyword">sizeof</span>(<a class="code" href="group__common.html#gaa172ef131853460e5b9f5c6db81d30f4">tByteArray</a>));
<a name="l00322"></a>00322   <span class="keywordflow">if</span> (<a class="code" href="group__htsmux.html#ga7ed75bdc695445584a5ee74869aeb448">HTSMUXstatus</a>[link] != <a class="code" href="group__htsmux.html#gabf4d63c771c4a2386d60a0c452c38a79">HTSMUX_STAT_NORMAL</a>)
<a name="l00323"></a>00323     <a class="code" href="group__htsmux.html#gab9fdda8b2a6ca3e637d831d62c20d857">HTSMUXsendCommand</a>(link, <a class="code" href="group__htsmux.html#ga4d110a4f1f00a887df8888b7678c4147">HTSMUX_CMD_RUN</a>);
<a name="l00324"></a>00324 
<a name="l00325"></a>00325   <a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>[0] = 2;                 <span class="comment">// Message size</span>
<a name="l00326"></a>00326   <a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>[1] = <a class="code" href="group__htsmux.html#ga3e5c86bc3da2a0b30418096889c43b59">HTSMUX_I2C_ADDR</a>;   <span class="comment">// I2C Address</span>
<a name="l00327"></a>00327   <a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>[2] = <a class="code" href="group__htsmux.html#gad2a815ec40bd134cc087ecfcd965e2f7">HTSMUX_I2C_BUF</a> + (<a class="code" href="group__htsmux.html#ga7460307a6c7989f31619e8807d3894f7">HTSMUX_BF_ENTRY_SIZE</a> * channel) + offset;
<a name="l00328"></a>00328 
<a name="l00329"></a>00329   <span class="keywordflow">if</span> (!<a class="code" href="group__common.html#gad02e06f83b264ee6fc7df41eb4712080">writeI2C</a>(link, <a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>, <a class="code" href="group__htsmux.html#ga3c4e921a4ae79f5ff4fd9d2924a0b3a7">HTSMUX_I2CReply</a>, numbytes))
<a name="l00330"></a>00330     <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00331"></a>00331 
<a name="l00332"></a>00332   memcpy(result, <a class="code" href="group__htsmux.html#ga3c4e921a4ae79f5ff4fd9d2924a0b3a7">HTSMUX_I2CReply</a>, <span class="keyword">sizeof</span>(<a class="code" href="group__common.html#gaa172ef131853460e5b9f5c6db81d30f4">tByteArray</a>));
<a name="l00333"></a>00333 
<a name="l00334"></a>00334   <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l00335"></a>00335 }
<a name="l00336"></a>00336 
<a name="l00337"></a>00337 <span class="comment"></span>
<a name="l00338"></a>00338 <span class="comment">/**</span>
<a name="l00339"></a>00339 <span class="comment"> * Read the value returned by the sensor attached the SMUX. This function</span>
<a name="l00340"></a>00340 <span class="comment"> * is for analogue sensors.</span>
<a name="l00341"></a>00341 <span class="comment"> * @param muxsensor the SMUX sensor port number</span>
<a name="l00342"></a>00342 <span class="comment"> * @return the value of the sensor or -1 if an error occurred.</span>
<a name="l00343"></a>00343 <span class="comment"> */</span>
<a name="l00344"></a><a class="code" href="group__htsmux.html#ga97b638b1fcdd530bd49661013ce2d4a1">00344</a> <span class="keywordtype">int</span> <a class="code" href="group__htsmux.html#ga97b638b1fcdd530bd49661013ce2d4a1">HTSMUXreadAnalogue</a>(<a class="code" href="group__htsmux.html#gab5bad1759ac110c43e66c3ec54047f42">tMUXSensor</a> muxsensor) {
<a name="l00345"></a>00345   tSensors link = (tSensors)<a class="code" href="group__htsmux.html#gabf500b8c69e75f9fad47c3a3e25626c7">SPORT</a>(muxsensor);
<a name="l00346"></a>00346   byte channel = <a class="code" href="group__htsmux.html#ga9b28381cff35f11a5fd1aff7576117bc">MPORT</a>(muxsensor);
<a name="l00347"></a>00347 
<a name="l00348"></a>00348   memset(<a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>, 0, <span class="keyword">sizeof</span>(<a class="code" href="group__common.html#gaa172ef131853460e5b9f5c6db81d30f4">tByteArray</a>));
<a name="l00349"></a>00349   <span class="keywordflow">if</span> (<a class="code" href="group__htsmux.html#ga7ed75bdc695445584a5ee74869aeb448">HTSMUXstatus</a>[link] != <a class="code" href="group__htsmux.html#gabf4d63c771c4a2386d60a0c452c38a79">HTSMUX_STAT_NORMAL</a>)
<a name="l00350"></a>00350     <a class="code" href="group__htsmux.html#gab9fdda8b2a6ca3e637d831d62c20d857">HTSMUXsendCommand</a>(link, <a class="code" href="group__htsmux.html#ga4d110a4f1f00a887df8888b7678c4147">HTSMUX_CMD_RUN</a>);
<a name="l00351"></a>00351 
<a name="l00352"></a>00352   <span class="keywordflow">if</span> (<a class="code" href="group__htsmux.html#ga1aab976635fca4e47109ec227c978141">HTSMUXSensorTypes</a>[muxsensor] != <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15ea566eb5d751b2adc4669d435c8d9d647b">HTSMUXSensorCustom</a>)
<a name="l00353"></a>00353     <a class="code" href="group__htsmux.html#ga6587e9bbc8a3cf78774e3e9c43645cef">HTSMUXconfigChannel</a>(muxsensor, <a class="code" href="group__htsmux.html#ga8cae8ef90996985e93877cad85c6e964">Analogue_config</a>);
<a name="l00354"></a>00354 
<a name="l00355"></a>00355   <a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>[0] = 2;               <span class="comment">// Message size</span>
<a name="l00356"></a>00356   <a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>[1] = <a class="code" href="group__htsmux.html#ga3e5c86bc3da2a0b30418096889c43b59">HTSMUX_I2C_ADDR</a>;   <span class="comment">// I2C Address</span>
<a name="l00357"></a>00357   <a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>[2] = <a class="code" href="group__htsmux.html#ga29e3b147d271575dd4e209c94b0db3f5">HTSMUX_ANALOG</a> + (<a class="code" href="group__htsmux.html#ga21ebbdc383893609a887587349fbc9fd">HTSMUX_AN_ENTRY_SIZE</a> * channel);
<a name="l00358"></a>00358 
<a name="l00359"></a>00359   <span class="keywordflow">if</span> (!<a class="code" href="group__common.html#gad02e06f83b264ee6fc7df41eb4712080">writeI2C</a>(link, <a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>, <a class="code" href="group__htsmux.html#ga3c4e921a4ae79f5ff4fd9d2924a0b3a7">HTSMUX_I2CReply</a>, 2))
<a name="l00360"></a>00360     <span class="keywordflow">return</span> -1;
<a name="l00361"></a>00361 
<a name="l00362"></a>00362   <span class="keywordflow">return</span> ((<span class="keywordtype">int</span>)<a class="code" href="group__htsmux.html#ga3c4e921a4ae79f5ff4fd9d2924a0b3a7">HTSMUX_I2CReply</a>[0] * 4) + <a class="code" href="group__htsmux.html#ga3c4e921a4ae79f5ff4fd9d2924a0b3a7">HTSMUX_I2CReply</a>[1];
<a name="l00363"></a>00363 }
<a name="l00364"></a>00364 
<a name="l00365"></a>00365 <span class="comment"></span>
<a name="l00366"></a>00366 <span class="comment">/**</span>
<a name="l00367"></a>00367 <span class="comment"> * Return a string for the sensor type.</span>
<a name="l00368"></a>00368 <span class="comment"> *</span>
<a name="l00369"></a>00369 <span class="comment"> * @param muxsensor the SMUX sensor port number</span>
<a name="l00370"></a>00370 <span class="comment"> * @param sensorName the string to hold the name of the sensor.</span>
<a name="l00371"></a>00371 <span class="comment"> */</span>
<a name="l00372"></a><a class="code" href="group__htsmux.html#ga66056d81fb5d409ea5fae273754c93a7">00372</a> <span class="keywordtype">void</span> <a class="code" href="group__htsmux.html#ga66056d81fb5d409ea5fae273754c93a7">HTSMUXsensorTypeToString</a>(<a class="code" href="group__htsmux.html#ga10cd65e58344a5b8a7543463d23ef15e">HTSMUXSensorType</a> muxsensor, <span class="keywordtype">string</span> &amp;sensorName) {
<a name="l00373"></a>00373   <span class="keywordflow">switch</span>(muxsensor) {
<a name="l00374"></a>00374     <span class="keywordflow">case</span> <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15ea3577f0349c4c0d70210f38bca34984d6">HTSMUXAnalogue</a>:    sensorName = <span class="stringliteral">&quot;Analogue&quot;</span>;      <span class="keywordflow">break</span>;
<a name="l00375"></a>00375     <span class="keywordflow">case</span> <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15ea54dfdb6ac056c41351ce8970d7de9d74">HTSMUXLegoUS</a>:      sensorName = <span class="stringliteral">&quot;Ultra Sonic&quot;</span>;   <span class="keywordflow">break</span>;
<a name="l00376"></a>00376     <span class="keywordflow">case</span> <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15eae9a69324161c57115addd4d789357e53">HTSMUXCompass</a>:     sensorName = <span class="stringliteral">&quot;Compass&quot;</span>;       <span class="keywordflow">break</span>;
<a name="l00377"></a>00377     <span class="keywordflow">case</span> <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15eab9057b18ac74c810a530b04351cdb998">HTSMUXColor</a>:       sensorName = <span class="stringliteral">&quot;Colour&quot;</span>;        <span class="keywordflow">break</span>;
<a name="l00378"></a>00378     <span class="keywordflow">case</span> <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15ea5b2e41909e2975ab32a9eba35cc570ae">HTSMUXColorNew</a>:    sensorName = <span class="stringliteral">&quot;Colour New&quot;</span>;    <span class="keywordflow">break</span>;
<a name="l00379"></a>00379     <span class="keywordflow">case</span> <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15ea480ca6b21f542a4aafe8814c8b9386d2">HTSMUXAccel</a>:       sensorName = <span class="stringliteral">&quot;Accel&quot;</span>;         <span class="keywordflow">break</span>;
<a name="l00380"></a>00380     <span class="keywordflow">case</span> <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15eac99c66e2ced83c67d3c4112377bcd784">HTSMUXIRSeeker</a>:    sensorName = <span class="stringliteral">&quot;IR Seeker&quot;</span>;     <span class="keywordflow">break</span>;
<a name="l00381"></a>00381     <span class="keywordflow">case</span> <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15ea6626c20be373964819d974255ea5c6b6">HTSMUXProto</a>:       sensorName = <span class="stringliteral">&quot;Proto Board&quot;</span>;   <span class="keywordflow">break</span>;
<a name="l00382"></a>00382     <span class="keywordflow">case</span> <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15ea7cf6e15105d89b7628d90f5b44f660f4">HTSMUXIRSeekerNew</a>: sensorName = <span class="stringliteral">&quot;IR Seeker V2&quot;</span>;  <span class="keywordflow">break</span>;
<a name="l00383"></a>00383     <span class="keywordflow">case</span> <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15eaae7ed6517d7ac86e86754a856d562c11">HTSMUXSensorNone</a> : sensorName = <span class="stringliteral">&quot;No sensor&quot;</span>;     <span class="keywordflow">break</span>;
<a name="l00384"></a>00384   }
<a name="l00385"></a>00385 }
<a name="l00386"></a>00386 
<a name="l00387"></a>00387 <span class="comment"></span>
<a name="l00388"></a>00388 <span class="comment">/**</span>
<a name="l00389"></a>00389 <span class="comment"> * Check if the battery is low</span>
<a name="l00390"></a>00390 <span class="comment"> *</span>
<a name="l00391"></a>00391 <span class="comment"> * @param link the SMUX port number</span>
<a name="l00392"></a>00392 <span class="comment"> * @return true if there is a power source problem</span>
<a name="l00393"></a>00393 <span class="comment"> */</span>
<a name="l00394"></a><a class="code" href="group__htsmux.html#gaef01450d36623d782b4bf1ad4f964246">00394</a> <span class="keywordtype">bool</span> <a class="code" href="group__htsmux.html#gaef01450d36623d782b4bf1ad4f964246">HTSMUXreadPowerStatus</a>(tSensors link) {
<a name="l00395"></a>00395   <span class="keywordflow">if</span> ((<a class="code" href="group__htsmux.html#gac632dc09067064e4341414b9bf5d8ee8">HTSMUXreadStatus</a>(link) &amp; <a class="code" href="group__htsmux.html#gababa89ef296eee1514e9fc0c4e039a40">HTSMUX_STAT_BATT</a>) == HTSMUX_STAT_BATT)
<a name="l00396"></a>00396     <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l00397"></a>00397   <span class="keywordflow">else</span>
<a name="l00398"></a>00398     <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00399"></a>00399 }
<a name="l00400"></a>00400 
<a name="l00401"></a>00401 <span class="comment"></span>
<a name="l00402"></a>00402 <span class="comment">/**</span>
<a name="l00403"></a>00403 <span class="comment"> * Configure the SMUX for a specific sensor.\n</span>
<a name="l00404"></a>00404 <span class="comment"> * The parameters are as follows:</span>
<a name="l00405"></a>00405 <span class="comment"> * - Channel mode</span>
<a name="l00406"></a>00406 <span class="comment"> * - Number of bytes to request from attached sensor</span>
<a name="l00407"></a>00407 <span class="comment"> * - I2C address</span>
<a name="l00408"></a>00408 <span class="comment"> * - I2C register to request</span>
<a name="l00409"></a>00409 <span class="comment"> *</span>
<a name="l00410"></a>00410 <span class="comment"> * @param muxsensor the SMUX sensor port number</span>
<a name="l00411"></a>00411 <span class="comment"> * @param configparams parameters for the channel&#39;s configuration</span>
<a name="l00412"></a>00412 <span class="comment"> * @return true if there is a power source problem</span>
<a name="l00413"></a>00413 <span class="comment"> */</span>
<a name="l00414"></a><a class="code" href="group__htsmux.html#ga6587e9bbc8a3cf78774e3e9c43645cef">00414</a> <span class="keywordtype">bool</span> <a class="code" href="group__htsmux.html#ga6587e9bbc8a3cf78774e3e9c43645cef">HTSMUXconfigChannel</a>(<a class="code" href="group__htsmux.html#gab5bad1759ac110c43e66c3ec54047f42">tMUXSensor</a> muxsensor, <a class="code" href="group__htsmux.html#gae535601c6d1a8544ed23e79d545ce45c">tConfigParams</a> &amp;configparams) {
<a name="l00415"></a>00415   memset(<a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>, 0, <span class="keyword">sizeof</span>(<a class="code" href="group__common.html#gaa172ef131853460e5b9f5c6db81d30f4">tByteArray</a>));
<a name="l00416"></a>00416 
<a name="l00417"></a>00417   <span class="comment">// Always make sure the SMUX is in the halted state</span>
<a name="l00418"></a>00418   <span class="keywordflow">if</span> (!<a class="code" href="group__htsmux.html#gab9fdda8b2a6ca3e637d831d62c20d857">HTSMUXsendCommand</a>((tSensors)<a class="code" href="group__htsmux.html#gabf500b8c69e75f9fad47c3a3e25626c7">SPORT</a>(muxsensor), <a class="code" href="group__htsmux.html#ga87bf7fc4152d52198af26231e10b2f9e">HTSMUX_CMD_HALT</a>))
<a name="l00419"></a>00419     <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00420"></a>00420         wait1Msec(50);
<a name="l00421"></a>00421 
<a name="l00422"></a>00422   <a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>[0] = 7;               <span class="comment">// Message size</span>
<a name="l00423"></a>00423   <a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>[1] = <a class="code" href="group__htsmux.html#ga3e5c86bc3da2a0b30418096889c43b59">HTSMUX_I2C_ADDR</a>; <span class="comment">// I2C Address</span>
<a name="l00424"></a>00424   <a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>[2] = <a class="code" href="group__htsmux.html#ga246fa0c629ab77d8071fcb8dc6ff2762">HTSMUX_CH_OFFSET</a> + (<a class="code" href="group__htsmux.html#gae9183c7e1b7003b4da364934ab946a8b">HTSMUX_CH_ENTRY_SIZE</a> * <a class="code" href="group__htsmux.html#ga9b28381cff35f11a5fd1aff7576117bc">MPORT</a>(muxsensor));
<a name="l00425"></a>00425   <a class="code" href="group__htsmux.html#gaee3e1a96fc89250ec83c010f9c01e943">HTSMUX_I2CRequest</a>[3] = configparams[0];
<a name="l00426"></a>00426   HTSMUX_I2CRequest[4] = 0x00;
<a name="l00427"></a>00427   HTSMUX_I2CRequest[5] = configparams[1];
<a name="l00428"></a>00428   HTSMUX_I2CRequest[6] = configparams[2];
<a name="l00429"></a>00429   HTSMUX_I2CRequest[7] = configparams[3];
<a name="l00430"></a>00430 
<a name="l00431"></a>00431   <span class="keywordflow">if</span> (!<a class="code" href="group__common.html#gad02e06f83b264ee6fc7df41eb4712080">writeI2C</a>((tSensors)<a class="code" href="group__htsmux.html#gabf500b8c69e75f9fad47c3a3e25626c7">SPORT</a>(muxsensor), HTSMUX_I2CRequest))
<a name="l00432"></a>00432     <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00433"></a>00433 
<a name="l00434"></a>00434   <a class="code" href="group__htsmux.html#ga1aab976635fca4e47109ec227c978141">HTSMUXSensorTypes</a>[muxsensor] = <a class="code" href="group__htsmux.html#gga10cd65e58344a5b8a7543463d23ef15ea566eb5d751b2adc4669d435c8d9d647b">HTSMUXSensorCustom</a>;
<a name="l00435"></a>00435   <span class="keywordflow">return</span> <a class="code" href="group__htsmux.html#gab9fdda8b2a6ca3e637d831d62c20d857">HTSMUXsendCommand</a>((tSensors)<a class="code" href="group__htsmux.html#gabf500b8c69e75f9fad47c3a3e25626c7">SPORT</a>(muxsensor), <a class="code" href="group__htsmux.html#ga4d110a4f1f00a887df8888b7678c4147">HTSMUX_CMD_RUN</a>);
<a name="l00436"></a>00436 }
<a name="l00437"></a>00437 
<a name="l00438"></a>00438 
<a name="l00439"></a>00439 <span class="preprocessor">#endif // __HTSMUX_H__</span>
<a name="l00440"></a>00440 <span class="preprocessor"></span><span class="comment">/*</span>
<a name="l00441"></a>00441 <span class="comment"> * $Id: hitechnic-sensormux.h 133 2013-03-10 15:15:38Z xander $</span>
<a name="l00442"></a>00442 <span class="comment"> */</span>
<a name="l00443"></a>00443 <span class="comment">/* @} */</span>
<a name="l00444"></a>00444 <span class="comment">/* @} */</span>
</pre></div></div>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Mar 13 2013 19:56:43 for ROBOTC Drivers by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.2 </small></address>
</body>
</html>
